<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>

<!-- Kenneth Harris
     CSPP 51081 Summer 2004
 -->


<TITLE>CSPP 51081 Links Page</TITLE>

</HEAD>

<BODY
BACKGROUND="http://www.cs.uchicago.edu/images/backgrounds/blueback.gif"
TEXT="#000000" LINK="#0000FF">


<center><img src="UofC.gif">&nbsp;<img src="gargoyle4.gif">

<p>
<b><font size="+3">Unix Systems Programming</font></b> <br>
<b><font size="+3">CSPP 51081</font></b> <br><br>
<b><font size="+2">The Links Page</font></b> <br>
</p> 
</center>

<H2>
Index to Links
</H2>
There are many electronic references on the Web, and I encourage you to 
explore.  I have tried to pare down references to a managable size.  Please 
send useful links to <A HREF="mailto:kaharris@cs.uchicago.edu">kaharris</A>

<UL>
    <LI> <A HREF="#UnixHistory"><IMG 
    src="http://www.interdepend.org/twiki/pub/wikiHome.gif" width="32" 
    height="40" border="0">
       Unix History </A>
    <LI> <A HREF="#resources"><img src="UofCsealSmall.gif"> Computing Resources</A>
    <LI> <A HREF="#IntroUnix"><img src="http://www.cs.uchicago.edu/images/misc/link.gif">
    Introduction to Unix</A>
    <LI> <A HREF="#<EM>bash</EM>Shell"><img src="http://www.cs.uchicago.edu/images/misc/link.gif">
    <EM>bash</EM> Shell </A>
    <LI> <A HREF="#textedit"><img src="http://www.cs.uchicago.edu/images/misc/link.gif">
    Text Editing on Unix </A>
    <LI> <A HREF="#UnixResources"><img src="http://www.cs.uchicago.edu/images/misc/link.gif">
    Unix Resources </A>
    <LI> <A HREF="#CProgramming"><img src="http://www.cs.uchicago.edu/images/misc/link.gif">
    C Programming </A>
    <LI> <A HREF="#StyleGuide"><img src="http://www.cs.uchicago.edu/images/misc/link.gif">
    Programming Style Guide </A>
    <LI> <A HREF="#ProgrammingTools"><img src="http://www.cs.uchicago.edu/images/misc/link.gif">
    Programming Tools </A>
    <LI> <A HREF="#SystemsProgramming"><img src="http://www.cs.uchicago.edu/images/misc/link.gif">
    Systems Programming References </A>
    <LI> <A HREF="#SocketProgramming"><img src="http://www.cs.uchicago.edu/images/misc/link.gif">
    Socket Programming References </A>
	<LI> <A HREF="#PthreadProgramming"><img src="http://www.cs.uchicago.edu/images/misc/link.gif">
    Thread Programming References </A>	
	
</UL>
<BR><BR>

<!-- Unix History -->
<H3>
<A NAME="UnixHistory">Unix History</A>
</H3>
When you need to have some fun.
<br>
<UL>
    <LI> <A href="http://www.levenez.com/unix/"> Unix History Web Site </A>
    Very cool timeline.  
    
    <LI> <A href="http://www.bell-labs.com/history/unix/"> Bell Labs </A>
    Where it all began.
    
    <LI> <A href="http://www.multicians.org/mepap.html">Multics and 
    <EM>emacs</EM></A> The mother of all Multics <EM>emacs</EM> papers.
    
    <LI> <A href="http://www.interdepend.org/cgi-bin/twiki/view/Main/SocialHistoryOfUnixAndLinux">
    <IMG src="http://www.interdepend.org/twiki/pub/wikiHome.gif" border="0"> Social History of Unix and 
    Linux</A> I remember watching Buck Rodgers.
    
    <LI> <A href="http://www.spack.org/wiki/InTheBeginningWasTheCommandLine">
    The Command Line Interface</A> An interesting account of the Operating 
    System Interface (CLI vs. GUI).
    
    <LI> <A href="http://www.oreilly.com/catalog/opensources/book/toc.html">
    <IMG src="http://www.oreilly.com/catalog/covers/opensources.s.gif" width="42" height="55" border="0">
    Open Sources</A> Voices from the Open Source Revolution.
    
    <LI> <A href="http://www.faqs.org/docs/artu/">
    <img src="http://www.catb.org/~esr/writings/taoup/cover-small.png" width="42" height="55" border="0">
    The Art of Unix Programming </A> by  Eric Raymond.  A thorough, 
    opinionated discussion of the Unix Philosophy. 
   
    <LI> <h4> In their own words.</h4>
    <UL>
	<LI> <A href="http://cm.bell-labs.com/cm/cs/who/dmr/hist.html">
	The Evolution of the Unix Time-sharing System</A> by Dennis Ritchie
	
	<LI> <A href="http://www.acm.org/classics/sep95/">
	Reflections on Trusting Trust</A> Ken Thompson's speech on reciept of the 
	Turing Award.  The speech is on the cutest program he ever wrote.  (No, 
	it is not the original Unix OS.)
	
	<LI><A href="http://www.gnu.org/gnu/manifesto.html">
	<IMG src="http://www.gnu.org/graphics/philosophical-gnu-sm.jpg"
	alt=" [image of a Philosophical Gnu] "
	width="42" height="55">The GNU Manifesto</A> by Richard Stallman
	
	<LI> <A href="http://www.shortfamilyonline.com/tech/unix/history-of-linux/reference/31-Jul-1992-birthday.html"> 
	<IMG src="LinuxPenguin.gif" width="42" height="55">
	Early history of Linux</A> by Linus Torvald.
	
	<LI> <A href="http://www.shortfamilyonline.com/tech/unix/history-of-linux/linux-is-obsolete/">
        <IMG src="http://www.cs.uchicago.edu/images/misc/opus.gif"	width="42" height="55">
	Linux is Obsolete.</A> Andy Tanenbaum's pronouncement (January 29, 1992) 
	on the Linux OS.  (Andy Tanenbaum of the Operating Systems text fame.)
	
    </UL>
   
    <LI> <A href="http://cm.bell-labs.com/cm/cs/who/dmr/1stEdman.html">
    Unix Programmer's Manual</A> First Edition, November 3, 1970.  
</UL>   


<!-- Computing Resources -->
<H3>
<A NAME="resources"> Computing Resources</A>
</H3>
Links to computing resources at the University of Chicago.
<br>
<UL>
    <LI><A HREF="http://www.cs.uchicago.edu/info/services"> 
	<img src="UofCsealTiny.gif"> Computing Services </A>

    <LI><A HREF="http://www.cs.uchicago.edu/info/services/csppfaq"> 
	<img src="UofCsealTiny.gif"> CSPP Computing Services </A>
	
    <LI><A HREF="http://www.maclab.cs.uchicago.edu/index.php?swap=home"> 
	<img src="UofCsealTiny.gif"> Computer Science Instructional Services</A>
        The Mac and Linux Lab in basement A of Regenstein Library.  Much 
        useful information on what is available on the Macs.	
	
	
    <LI> <h4> Other Useful Links </h4> 
       <UL>
	<LI><A HREF="http://www.cs.uchicago.edu/info/services/getting_started"> 
	<img src="UofCsealTiny.gif"> Setting-up a remote account </A>

	<LI><A HREF="http://connectivity.uchicago.edu/guides/ssh/ "> 
	<img src="UofCsealTiny.gif"> Connectivity Package SSH homepage </A>
	
	<LI><A HREF="http://stuff.cs.uchicago.edu/"> 
	<img src="UofCsealTiny.gif"> General Search for Machines </A>

        <LI><A HREF="http://tools.cs.uchicago.edu/find_cs_hosts/find.php"> 
	<img src="UofCsealTiny.gif"> Searching for Accessible Machines </A>

 	<LI><A HREF="http://packages.debian.org/stable/">
        <img src="UofCsealTiny.gif"> Debian 3.0 distribution </A>.  This is
	a list of programs provided with the Debian 3.0 distribution found on
	the CSPP machines.	    
       </UL>
</UL>
<br><br>

<!-- Introduction to Unix -->
<H3>
<A NAME="IntroUnix"> Introduction to Unix</A>
</H3>
These are useful links for getting started on Unix.
<BR>
<UL>
    <LI><A HREF="http://www.ee.surrey.ac.uk/Teaching/Unix/"> 
	 First Unix Tutorial </A>

    <LI><A HREF="http://support.uchicago.edu/docs/unix/tutorial/"> 
	Unix Command Line Tutorial  </A>
	
    <LI> <A HREF="unix-resources/unix-rice.pdf">Unix Tutorial (pdf)</a> A 
    training manual from Rice University.
    
    <LI> <A HREF="unix-resources/linux-fund.pdf">Linux Fundamentals (pdf)</A> A training 
    maual from Fortuitous Technologies.

    <LI><a
    href="http://safari.oreilly.com/JVXSL.asp?x=1&amp;mode=section&amp;sortKey=rank&amp;sortOrder=desc&amp;view=book&amp;xmlid=0-596-00261-0&amp;open=false&amp;g=&amp;srchText=unix&amp;code=&amp;h=&amp;m=&amp;l=1&amp;catid=&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;page=1">
    <img src="http://safari.oreilly.com/images/0596002610/lunix5_xs.gif" width="36" height="55" border="0">
    Learning the Unix Operating System, 5th Edition</a> 
    by Jerry Peek, John Strang, Grace Todino-Gonguet

   
    <LI><a 
    href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=isbn&amp;xmlid=0-7897-2250-X&amp;g=&amp;catid=itbooks.opsys&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.oreilly.com/images/078972250X/078972250X_cs.jpg" width="42" height="55" border="0">
    Practical Unix</a>
    By Steve Moritsugu, James Edwards, Sanjiv Guha, David Horvath, Gordon Marler,
    Jesper Pedersen, David Pitts, Dan Wilson
    
    
    <LI> <h4>Unix Cheat Sheets</h4> Each two pages, Print and Keep at your side.  
    <UL>
	<LI><a HREF="unix-cheat-sheets/unix-ref-card.pdf"> 
	Unix Cheat Sheat I (pdf) </a>
	<LI><a HREF="unix-cheat-sheets/unix-ref-uc-card.pdf"> 
	Unix Cheat Sheat II (pdf) </a>
    </UL>
</UL>
<BR><BR>


<!-- <EM>bash</EM> Shell -->
<H3>
<A NAME="<EM>bash</EM>Shell"> <EM>bash</EM> Shell</A>
</H3>
<EM>bash</EM> Shell resources.
<BR>
<UL>
    <LI> <a 
    href="http://www.justlinux.com/nhf/Programming/Introduction_to_bash_Shell_Scripting.html">
    Absolute Introduction to the <EM>bash</EM> Shell Scripting</a>
    
    <LI> <h4> Two part tutorial on <EM>bash</EM> Shell Programming </h4>
    <UL>
	<LI> <a 
	href="http://www.tldp.org/LDP/bash-Beginners-Guide/html/index.html">
	Beginning <EM>bash</EM> Shell Programming</a>
	<LI><a 
	href="http://www.tldp.org/LDP/abs/html/index.html">
	Advanced <EM>bash</EM> Shell Programming</a>
    </UL>
    <BR>
    
    <LI><a
    href="http://www.justlinux.com/nhf/Shells/Configuring_the_bash_Shell.html">
    Configuring the <EM>bash</EM> Shell</a> A short introduction on setting your 
    environment variables.
 
 
     <LI> Both <A href="#UnixResources">Unix in a 
    Nutshell</A> and <A href="UnixResources">Linux in a Nutshell</A> have 
    succint chapters on the <EM>bash</EM> shell (and other shell flavors.)
    
    <LI><a href="http://www.gnu.org/software/bash/manual/bashref.html"
    <img src="http://www.gnu.org/graphics/gnu-head.jpg"width="41" height="55" border="0">
    <EM>bash</EM> Reference Manual</a>
    
    <LI><a href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=&amp;xmlid=1-56592-347-2&amp;g=&amp;catid=itbooks.opsys&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.oreilly.com/images/1565923472/bash2_icon.gif" width="41" height="55" border="0">
    Learning the <EM>bash</EM> Shell, 2nd Edition</a>
    by Cameron Newham, Bill Rosenblatt
 
</UL>

<!-- Text Editing on Unix:  <EM>emacs</EM> and <EM>vi</EM> -->
<H3>
<A NAME="TextEdit"> Text Editing on Unix: <EM>emacs</EM> and <EM>vi</EM></A>
</H3>
Choosing a text editor may be the most important decision you make.  I use 
<EM>vi</EM> which is a text-based editor (I am old-fashioned.)  Most people use 
<EM>emacs</EM>, which is a Gui text editor--windows, mouse control, color graphics.  
There is a Gui version of <EM>vi</EM>, <EM>vim</EM>, which looks very good as well.  All are 
avaiavailable on the Linux cluster.  
<BR>
<UL>
    
    <LI> <h4><EM>emacs</EM> Tutorials</h4>  There are many, many tutorials on the web.  Choose the one 
    most readable to you.  <EM>emacs</EM> is a monster program with something for 
    everyone.  
    <UL>
	<LI><A href="http://heather.cs.ucdavis.edu/~matloff/UnixAndC/Editors/Emacs.html">
	<EM>emacs</EM> Tutorial I</A>  I really like this tutorial from Norm Matloff.
	<LI><A href="http://www.stolaf.edu/people/humke/UNIX/emacs-tutorial.html">
	<EM>emacs</EM> Tutorial II</A> Many tutorials are variants of this one.
	<LI> <A href="text-edit/emacs-rice.pdf">
	<EM>emacs</EM> Tutorial III (pdf) </A> This is a .pdf format and written for 
	students at Rice.
    </UL>

    <LI> <h4> <EM>vi</EM> Tutorials</h4>  You will need a passing acquaintance with <EM>vi</EM> to use 
    the graphical <EM>vim</EM>.  
    <UL>
        <LI><A href="http://heather.cs.ucdavis.edu/~matloff/UnixAndC/Editors/ViIntro.html">
         <EM>vi</EM> Tutorial I</A> A very good tutorial from Norm Matloff.
	<LI> <A href="text-edit/vi-rice.pdf">
	<EM>vi</EM> Tutorial II (pdf) </A> This is a .pdf format and written for students 
	at Rice.
    </UL>    

    <LI> <h4>Cheat Sheets</h4> Each two pages, Print and Keep at your side.
    <UL>
	<LI><A href="text-edit/emacs-ref-card.pdf"><EM>emacs</EM> Cheat Sheet</A>
	<LI><A href="text-edit/vi-ref-card.pdf"><EM>vi</EM> Cheat Sheet</A>
    </UL>
    
    <LI> <h4> Pocket References </h4>
    <UL>
    <LI><a href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=&amp;xmlid=1-56592-496-7&amp;g=&amp;catid=itbooks.opsys&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.oreilly.com/images/1565924967/gnupr_icon.gif" width="33" height="55" border="0">
    GNU Emacs Pocket Reference</a> by Debra Cameron

    
    <LI> <a href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=&amp;xmlid=1-56592-497-5&amp;g=&amp;catid=itbooks.opsys&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.oreilly.com/images/1565924975/vipr_icon.gif" width="33" height="55" border="0">
    <EM>vi</EM> Editor Pocket Reference</a> by Arnold Robbins
   </UL>

   <BR>
   
    <LI> Both <A href="#UnixResources">Unix in a 
    Nutshell</A> and <A href="UnixResources">Linux in a Nutshell</A> have 
    succint chapters on <EM>emacs</EM> and vi.
    
   <LI><a href="http://www.gnu.org/software/emacs/manual/html_node/index.html"
    <img src="http://www.gnu.org/graphics/gnu-head.jpg"width="41" height="55" border="0">
    <EM>emacs</EM> Reference Manual</a>  Sorry, this is brutal.  I have not yet 
    found a thorough reference to <EM>emacs</EM> online.
    
    <LI><a href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=&amp;xmlid=1-56592-426-6&amp;g=&amp;catid=itbooks.opsys&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.oreilly.com/images/1565924266/vi6_icon.gif" width="41" height="55" border="0">
    Learning the <EM>vi</EM> Editor, 6th Edition</a>
    by Linda Lamb and Arnold Robbins
    <BR>
    <LI><A href="http://www.thomer.com/vi/vi.html">
    The <EM>vi</EM> Lover's Web Page</A> Comprehensive guide to <EM>vi</EM>. 
    <BR>
    
    <LI><a href="text-edit/vimbook.pdf">
    <img src="http://www.iccf.nl/images/vimbook.jpg" width="41" height="55" border="0">
    <EM>vi</EM> IMproved <EM>vim</EM></a> by Steve Oualline
</UL>


<!-- Unix Resources -->
<H3>
<A NAME="UnixResources"> Unix Resources</A>
</H3>
These are useful reference links.  
<BR>
<UL>
    <LI><a 
    href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=isbn&amp;xmlid=0-596-00330-7&amp;g=&amp;catid=itbooks.opsys&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.oreilly.com/images/0596003307/upt3_icon.gif" width="42" height="55" border="0">
    UNIX Power Tools, 3rd Edition </a>
    by Mike Loukides, Tim O'Reilly, Jerry Peek, Shelley Power

    <LI> <a 
    href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=isbn&amp;xmlid=0-596-00025-1&amp;g=&amp;catid=itbooks.opsys&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.oreilly.com/images/0596000251/linuxnut3_icon.gif" width="36" height="55" border="0">
    Linux in a Nutshell </a>
    by Stephen Figgins, Jessica P. Hekman, Ellen Siever, Stephen Spainhou 
    
    <LI> <a href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=&amp;xmlid=1-56592-427-4&amp;g=&amp;catid=itbooks.prog&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.oreilly.com/images/1565924274/unixnut3_icon.gif" width="36" height="55" border="0">
    Unix in a Nutshell </a> by Arnold Robbins
</UL>
    

<!-- C Programming -->
<H3>
<A NAME="CProgramming"> C Programming </A>
</H3>
Links on C programming.
<BR>
<UL>
    <LI> <A href="http://cslibrary.stanford.edu/101/EssentialC.pdf">  
    Essential C (.pdf)</A> by the Stanford CS Education Library. This is an
    excellent place to start refreshing your C programming skills.

    <LI> <A href="http://cslibrary.stanford.edu/102/PointersAndMemory.pdf">
    Pointers and Memory (.pdf)</A> by the Stanford CS Education Library.  
    When you are ready to muscle-up on the most common source of 
    programming bugs.  This is an excellent discussion of using pointers.
    
    <LI> <a href="http://www.cs.cf.ac.uk/Dave/C/CE.html">
    Programming in C</a> Online Courseware by David Marshall.  This is a 
    very good reference that will be a useful resource throughout the 
    the quarter with its discussion of UNIX system calls.


    <LI><a href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=&amp;xmlid=0-672-32222-6&amp;g=&amp;catid=itbooks.prog&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.oreilly.com/images/0672322226/0672322226_cs.jpg" width="42" height="55" border="0">
    C Primer Plus</a> by Stephen Prata

    <LI><a href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=&amp;xmlid=0-596-00436-2&amp;g=&amp;catid=itbooks.prog&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.oreilly.com/images/0596004362/cpr_icon.gif" width="33" height="55" border="0">
    C Pocket Reference</a> by Ulla Kirch-Prinz, Peter Prinz
    
    <LI> <a href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=&amp;xmlid=1-56592-306-5&amp;g=&amp;catid=itbooks.prog&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.oreilly.com/images/1565923065/pcp3_icon.gif" width="41" height="55" border="0">
    Practical C Programming</a> by Steve Oualline
    
</UL>

<!-- Style Guide -->
<H3>
<A NAME="StyleGuide"> Style Guide</A>
</H3>
Links on programming style and philosophy.
You should choose one, read it carefully, and program yourself to 
follow it.  The essence of style is clarity and consistency.  Choose the 
guide that you are comfortable with and stick to it.
<BR>
<UL>
    <LI> <A href="StyleGuide/PeterStyleGuide.pdf"> Peter van der Klugt Style Guide </A>
    <LI> <A href="StyleGuide/NASA.pdf"> Nasa Style Guide</A>
    <LI> <A href="StyleGuide/IndianRiver.pdf"> Indian River Style Guide</A>    
</UL>


<!-- Programming Tools -->
<H3>
<A NAME="ProgrammingTools"> Programming Tools</A>
</H3>
There are a multitude of tools available for building programs.  I have 
included links to three you will likely find useful for this class.
<BR>

<UL>
    <LI><A HREF="http://cslibrary.stanford.edu/107/UnixProgrammingTools.pdf">
    Unix Programming Tools (pdf)</A> Stanford's Guide to using 
    <EM>gcc</EM>, <EM>make</EM>,<EM>gdb</EM>, <EM>emacs</EM> and 
    <EM><EM>bash</EM></EM>.  An excellent place to start.
    
    <LI><A HREF="http://www.cs.washington.edu/orgs/acm/tutorials/dev-in-unix/">
    ACM Tutorials</A> Tutorials on using EM>gcc</EM>, 
    <EM>make</EM>,<EM>gdb</EM> and <EM>cvs</EM>.  The section on 
    <EM>make</EM> is an excellent discussion of using this utility.  (The 
    other tutorials are really more notes.)
    
    <LI> <h4> <EM>gcc</EM> </h4> Gnu's C compiler.  There are several 
    versions in use on machines.  To find out which version your machine 
    is running type  <TT>gcc -v</TT> on the command line.  For our 
    purposes the version you use will not effect performance.
    <BR>

    <UL>
	<LI><A HREF="http://users.actcom.co.il/~choo/lupg/tutorials/c-on-unix/c-on-unix.html">
	Compiling "C" Programs with <EM>gcc</EM></A> Bare bones introduction to 
	compiling with <EM>gcc</EM> (Gnu's version of the C compiler called 
	<EM>cc</EM> in the text) from the Little Unix Programmers Group (LUPG).  
	You will probably not need much more for this class.
	
	<LI><A HREF="http://gcc.gnu.org/onlinedocs/gcc-3.4.0/gcc/index.html#toc_Top">
	<img src="http://www.gnu.org/graphics/gnu-head.jpg"width="41" height="55" border="0">
	Documentation on <EM>gcc-3.4.0</EM></A>
	The Debian 3.0 machines on the CSPP cluster run <EM>gcc-3.4.0</EM>.
	
	<LI><A HREF="http://gcc.gnu.org/onlinedocs/">
	Online documentation of other versions of <EM>gcc</EM></A> Some machines 
	are running <EM>gcc-3.3.1</EM> or <EM>gcc-2.95.3</EM>.    
    </UL>
    <BR>
    
    <LI> <h4> <EM>make</EM> </h4> Utility for building projects
    <UL>
	<LI><A HREF="http://www.cs.cf.ac.uk/Dave/C/node35.html#SECTION003500000000000000000">
         Writing Larger Programs</A> from Dave Marshall's Sourceware.  A 
         good place to start with the motivation and use of <EM>make</EM>.
	 
	 <LI><A HREF="http://users.actcom.co.il/~choo/lupg/tutorials/writing-makefiles/writing-makefiles.html">
	 Tutorial on <EM>make</EM> </A> Very good introduction to using 
	 <EM>make</EM> from the Little Unix Programmers Group (LUPG).
	 
	 <LI><A HREF="http://www.gnu.org/software/make/manual/html_mono/make.html">
	 <img src="http://www.gnu.org/graphics/gnu-head.jpg"width="41" height="55" border="0">
	 GNU <EM>make</EM></A>  Reference Manual.
	
    </UL>
    <BR>
    
    <LI> <h4> Debuggers </h4> Text-based <EM>gdb</EM> and graphics based 
    <EM>ddd</EM>
    <UL>
	<LI><A HREF="http://sources.redhat.com/gdb/current/onlinedocs/gdb_toc.html">
	<img src="http://www.gnu.org/graphics/gnu-head.jpg"width="41" height="55" border="0">
	Guide to Using <EM>gdb</EM></A> <EM>gdb</EM> is a text-based debugger.  
	This is the reference manual.
	
	<LI><A HREF="http://www.gnu.org/software/ddd/manual/html_mono/ddd.html">
	<img src="http://www.gnu.org/graphics/gnu-head.jpg"width="41" height="55" border="0">
	Debugging with <EM>ddd</EM></A> <EM>ddd</EM> is a graphical interface for 
	<EM>gdb</EM>.  This is an excellent source for using <EM>ddd</EM>.  I 
	encourage use to use this resource.
    </UL>
    <BR>
    
</UL>

<!-- Programming Tools -->
<H3>
<A NAME="SystemsProgramming"> Systems Programming References</A>
</H3>

<BR>

<UL>
    <LI><A HREF="http://www.tldp.org/LDP/tlk/tlk.html">
    <IMG src="LinuxPenguin.gif" width="42" height="55">
   The Linux Kernel</A> by David A Rusling.  Highly recommended guide to 
   the Linux Kernel for those who want to look beneath the hood. 
    
    <LI><A HREF="http://www.unix-systems.org/single_unix_specification/">
    The Open Group Base Specifications Issue 6</A> (POSIX Standards) See 
    the section on System Interfaces for the specifications and examples of 
    correct usage for system call library.  This is a very readable 
    document and well worth your use as a reference.
    
    <LI><A HREF="http://users.actcom.co.il/~choo/lupg/tutorials/">
    LUPG Tutorials</A> Very good collection of tutorials on programming 
    for Unix.  
    
     <LI> <a href="http://www.cs.cf.ac.uk/Dave/C/CE.html">
    Programming in C</a> Online Courseware by David Marshall.  This is a 
    very good reference that will be a useful resource throughout the 
    the quarter with its discussion of UNIX system calls.
    
    <LI><a href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=&amp;xmlid=0-7357-1043-0&amp;g=&amp;catid=itbooks.opsys&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.peachpit.com/images/0735710430/0735710430_cs.jpg" width="42" height="55" border="0">
    Advanced Linux Programming</a> by Mark Mitchell, Jeffrey Oldham, Alex Samuel
    
    <LI><a href="http://safari.peachpit.com/?x=1&amp;mode=section&amp;sortKey=title&amp;sortOrder=asc&amp;view=&amp;xmlid=067231990X&amp;g=&amp;catid=itbooks.opsys&amp;s=1&amp;b=1&amp;f=1&amp;t=1&amp;c=1&amp;u=1&amp;r=&amp;o=1&amp;n=1&amp;d=1&amp;p=1&amp;srchText=">
    <img src="http://safari.peachpit.com/images/067231990X/067231990X_cs.jpg" width="42" height="55" border="0">
    Advanced UNIX Programming</a> by Warren W. Gay
</UL>

<!-- Socket Programming Tools -->
<H3>
<A NAME="SocketProgramming"> Socket Programming References</A>
</H3>

<BR>

<UL>
	<li><a href="http://www.ecst.csuchico.edu/~beej/guide/net/html/">
	   Beej's Guide to Network Programming</a> An excellent introductory tutorial on
	   Socket Programming </li>
	   
	<LI><a href="http://world.std.com/~jimf/papers/sockets/sockets.html">
	    BSD Sockets:  A Quick and Dirty Primer</a></LI>
		
     <LI><a href="http://www.uwo.ca/its/doc/courses/notes/socket/">
	    An Introduction to Socket Programming</a> 
		A little more advanced than Beej's Guide.  Developes <em>whois</em> server.</LI>
		
    <LI><a href="http://users.actcom.co.il/~choo/lupg/tutorials/internetworking/internet-theory.html">
	   Network Programming Under Unix Systems</a></LI>
		
	 <LI><a href="tcpip-intro.txt">Intoduction to Internet Protocols</a></LI>
	 
	 <LI><a href="http://www.rfc-editor.org/">RFC Editor Homepage</a> A clearinghouse of
	    technical and informational notes about the Internet</LI>
		<UL>
		   <LI><a href="http://www.rfc-editor.org/rfc/rfc791.txt">
		      Internet Protocol (IP)</a></LI>
			  
		   <LI><a href="http://www.rfc-editor.org/rfc/rfc793.txt">
		      Transfer Control Protocol (TCP)</a></LI>
			  
		   <LI><a href="ftp://ftp.rfc-editor.org/in-notes/rfc2616.pdf">
			  Hypertext Transfer Protocol (HTTP/1.1)</a></LI>
		</UL>
</UL>

<!-- Pthread Programming Tools -->
<H3>
<A NAME="PthreadProgramming"> Thread Programming References</A>
</H3>

<BR>

<UL>

    <LI> <a href="http://www.opengroup.org/onlinepubs/009695399/idx/threads.html">
      POSIX Threads Index</a> POSIX specification for pthreads API
      </LI>

    <LI><a href="http://www.llnl.gov/computing/tutorials/workshops/workshop/pthreads/MAIN.html">
	    Posix Thread Programming</a></LI>
		
	<LI><a href="http://users.actcom.co.il/~choo/lupg/tutorials/multi-thread/multi-thread.html">
	    Multi-Thread Programming with POSIX Threads</a></LI>

    <LI><a href="http://safari.peachpit.com/JVXSL.asp?x=1&mode=section&sortKey=rank&sortOrder=desc&view=book&g=&catid=itbooks.opsys.linux&s=1&b=1&f=1&t=1&c=1&u=1&r=&o=1&n=1&d=1&p=1&a=0&xmlid=0-7357-1043-0/ch04">
	Chapter 4, Threads</a> in 
    Advanced Linux Programming by Mark Mitchell, Jeffrey Oldham, Alex Samuel

	<LI><a href="http://www.cs.cf.ac.uk/Dave/C/node32.html">
	    Thread Programming Examples</a></LI>
	
	<LI> <a href="http://www.unet.univie.ac.at/aix/aixprggd/genprogc/toc.htm">
	     Thread Programing Guideline</a> Chapter 11 of 
	    <em>AIX Version 4.3 General Programming Concepts:  Writing and Debugging Programs</em></LI>

	<LI> <a href="http://www.cs.uchicago.edu/%7Ekaharris/cspp51081/lecture9.pdf>Lecture Notes on Posix Thread Programming</a> </LI>
</UL>

</BODY>

</HTML>
